
package com.udc.medLine.transaction;

import java.util.List;

import com.udc.medLine.entity.CondicaoVO;
import com.udc.medLine.entity.TipoItem;
import com.udc.medLine.factory.FactoryTipoItem;
import com.udc.medLine.persistence.Bd;

public class TransactionTipoItem {

	private TipoItem tipoItem;
	private List<TipoItem> listTipoItem;
	private Bd banco;
	
	/**
	 * 
	 */
	public TransactionTipoItem() {
		super();
		tipoItem = new TipoItem();
		try{
			banco = Bd.getInstance();
		}
		catch(Exception e){
			e.printStackTrace();
		}
	}

	public TipoItem getTipoItem() {
		return tipoItem;
	}

	public void setTipoItem(TipoItem new_tipoItem) {
		this.tipoItem = new_tipoItem;
	}

	public void remover(TipoItem nTipoItem) throws Exception {
		banco.beginTransaction();
			FactoryTipoItem factory = new FactoryTipoItem();
			tipoItem.setId(nTipoItem.getId());
			factory.setTipoItem(tipoItem);
			factory.delete();
		banco.commit();
	}

	public void inserir(TipoItem nTipoItem) throws Exception {
		banco.beginTransaction();
			FactoryTipoItem factory = new FactoryTipoItem();			
			tipoItem.setNome(nTipoItem.getNome());
			factory.setTipoItem(tipoItem);
			factory.insert();
		banco.commit();
	}

	public void atualizar(TipoItem nTipoItem) throws Exception {
		banco.beginTransaction();
			FactoryTipoItem factory = new FactoryTipoItem();
			tipoItem.setId(nTipoItem.getId());
			tipoItem.setNome(nTipoItem.getNome());
			factory.setTipoItem(tipoItem);
			factory.update();
		banco.commit();
	}


	public void obterTipoItem(String campo, String valor) throws Exception{
		banco.beginTransaction();
			FactoryTipoItem factory = new FactoryTipoItem();
			factory.setTipoItem(new TipoItem());
			listTipoItem = factory.getTipoItem(campo,valor);
		banco.commit();
	}


	public void getTipoItem(String campo, String valor) throws Exception{
		this.obterTipoItem(campo, valor);
		if(listTipoItem.size()>0){
			
			this.setTipoItem(listTipoItem.get(0));
			
		}
	}
	
	public void obterListaTipoItem() throws Exception{
		banco.beginTransaction();
			FactoryTipoItem factory = new FactoryTipoItem();
			factory.setTipoItem(new TipoItem());
			listTipoItem = factory.getListaTipoItem();
		banco.commit();
	}
	
	public void obterTipoItem(TipoItem nTipoItem) throws Exception{
		banco.beginTransaction();
			FactoryTipoItem factory = new FactoryTipoItem();
			tipoItem.setId(nTipoItem.getId());
			factory.setTipoItem(tipoItem);
			tipoItem = factory.obterTipoItem();
		banco.commit();
	}
	
	/**
	 * @return
	 */
	public List<TipoItem> getListTipoItem() {
		return listTipoItem;
	}

	/**
	 * @param list
	 */
	public void setListTipoItem(List<TipoItem> list) {
		listTipoItem = list;
	}

	public List<TipoItem> search(CondicaoVO condicao) throws Exception {
		banco.beginTransaction();
		FactoryTipoItem factory = new FactoryTipoItem();
		listTipoItem = factory.search(condicao);
		banco.commit();
		return listTipoItem;
	}

}
